package main

import "fmt"

//演示golang的错误处理

func main() {
	//golang通过defer panic recover  进行错误处理
	//1)通过panic抛出一个异常	2)在defer中通过	3)recover来捕获异常然后正常处理
	// test()
	test2()
	fmt.Println("剩下的代码")
}

func test() {
	num1 := 10
	num2 := 0
	num3 := num1 / num2
	fmt.Println(num3)
}

func test2() {

	defer func() { //利用defer在函数执行完毕后一定执行的特性，捕获异常
		err := recover() //recover是内置函数，可以捕获到异常
		if err != nil {
			fmt.Println("发生了错误", err)
		}
	}() //注意defer后面必须是一个函数的执行，因此这里通过()直接执行匿名函数

	num1 := 10
	num2 := 0
	num3 := num1 / num2
	fmt.Println(num3)
}
